JS
var a = 1//1
var b = a//2
b = 10//3
console.log(a)
a
,b
,各自是不同記憶體位置,b
是把值複製一份到自己的位置,所以後來改b
值不影響a
(圖片來源:Udemy-JavaScript: Understanding the Weird Parts)
function hi(a, b) {//3
var one = a;//4
a = b;//5
b = one;//6
return (`x=${x}, y=${y}, a=${a}, b=${b}, one=${one}`);//7
}
//程式先從這裡開始執行
var x = 10;//1
var y = 20;//2
hi(x, y);//8
解析1
順序1~順序4變數裡的值如下表,x
和y
在傳遞值的時候,a
,b
,one
都是把值複製一份到自己的位置
變數名稱 | 記憶體位置 | 儲存的值 |
---|---|---|
x | 0x001 | 10 |
y | 0x002 | 20 |
a | 0x003 | 10 |
b | 0x004 | 20 |
one | 0x005 | 10 |
解析2
順序5,順序6變數裡的值如下表,就算a
,b
再改變值也不影響其他
變數名稱 | 記憶體位置 | 儲存的值 |
---|---|---|
x | 0x001 | 10 |
y | 0x002 | 20 |
a | 0x003 | 20 |
b | 0x004 | 10 |
one | 0x005 | 10 |